# 高阶函数

####sorted()

arr = [31, 71, -9, 20, 10]
# 将arr按照从小到大的方式进行排序并输出（使用1个参数）
result = sorted(arr)
print(result)
# 将arr按照从小到大的方式进行排序并输出（使用2个参数）
result = sorted(arr, reverse=False)
print(result)
# 将arr按照从大到小的方式进行排序并输出
result = sorted(arr, reverse=True)
print(result)

# 使用abs这个函数(求绝对值)作为sorted的key关键字参数对arr排序,输出结果[1 3 7 9 10 20]
arr = [1, 3, 7, -9, 10, 20]
result = sorted(arr, key=abs)
print(result)


# 在sorted函数中使用自定义函数对arr进行余2处理，输出结果[2, 4, 6, 8, 3, 7]
def func(num):
    print(f'{num} % 2 = {num % 2}')
    return num % 2  # 对传入的参数进行%2处理后再进行排序


arr = [3, 2, 4, 6, 8, 7]
result = sorted(arr, key=func)
print(result)

# 使用lambda 进行上一个案例的优化，并说明其优缺点。
